package com.linkgie.galaxyframework.log;

import com.linkgie.galaxyframework.security.application.ServiceAction;

/**
 * 执行信息；
 * 
 * @author huanghaiquan
 *
 */
public interface Execution {

	/**
	 * 领域；
	 * 
	 * <p>
	 * 如果未定义，则为 null ；
	 * 
	 * @return
	 */
	String getDomain();

	/**
	 * 当前执行的服务操作；
	 * <p>
	 * 服务操作可通过 {@link ServiceAction} 定义；
	 * <p>
	 * 如果未定义，则返回 null ；
	 * 
	 * @return
	 */
	String getServiceAction();

	/**
	 * 调用的开始时间；
	 * 
	 * @return
	 */
	Long getBeginTime();

	/**
	 * 调用的结束时间；
	 * <p>
	 * 未结束前返回 -1 ;
	 * 
	 * @return
	 */
	Long getEndTime();

	/**
	 * 日志阶段；
	 * <p>
	 * 有两种： <br>
	 * 1. {@link LogPhase#PRE} 表示在方法调用前记录日志；<br>
	 * 2. {@link LogPhase#POST} 表示在方法调用返回或者异常抛出后记录日志；
	 * 
	 * @return
	 */
	LogPhase getPhase();

}
